//
//  YDThread.h
//  YDBASE
//
//  Created by rowena on 2019/5/15.
//  Copyright © 2019 wuyezhiguhun. All rights reserved.
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface YDThread : NSObject


/**
 * 创建单例
 * @return 返回YDThread 对象
 */
+ (instancetype)sharedThread;

/**
 * 创建线程 类方法
 * @pram target 目标对象
 * @pram selector 执行函数
 * @pram service 线程优先级
 * @pram name 线程名字
 * @pram argument 论点
 * @pram open 是否开启线程 YES：开启线程 NO：不开启线程
 * @return 返回创建的线程
 */
+ (NSThread *)yd_NewThreadWithTarget:(id)target
                            selector:(SEL)selector
                             service:(NSQualityOfService)service
                                name:(NSString *)name
                              object:(nullable id)argument
                                open:(BOOL)open;

/**
 * 创建线程 类方法
 * @pram target 目标对象
 * @pram selector 执行函数
 * @pram service 线程优先级
 * @pram name 线程名字
 * @pram argument 论点
 * @pram open 是否开启线程 YES：开启线程 NO：不开启线程
 * @return 返回创建的线程
 */
- (NSThread *)yd_NewThreadWithTarget:(id)target
                            selector:(SEL)selector
                             service:(NSQualityOfService)service
                                name:(NSString *)name
                              object:(nullable id)argument
                                open:(BOOL)open;

/**
 * 加锁代码块
 * @pram back 回调代码块
 */
+ (void)yd_SynchronizedBack:(nullable void (^)(void))back;



@end

NS_ASSUME_NONNULL_END
